﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FullThrustLogic;
using FullThrustLogic.Core;
using FullThrustLogic.ShipComponent;
using FullThrustLogic.ShipComponent.Weapon;

namespace FullThrustLogic.SenarioManager
{
    public class SenarioManager
    {
        public static GameContext LoadTwoPlayerSenario(GameContext game)
        {
            Ship ff1 = new Ship(game);

            ff1.Size = 1;

            ff1.Enabled = true;

            ff1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            ff1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            ff1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            ff1.Thrusts.Add(new Thrust() { AvailableThrust = 4, Enabled = true });
            ff1.Thrusts.Add(new Thrust() { AvailableThrust = 4, Enabled = true });

            ff1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            ff1.Hull.MaxThresholdLevel = 4;
            ff1.Hull.ThresholdLevel = 0;
            ff1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            ff1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            ff1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 1 });
            ff1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 1 });

            game.Players[0].Ships.Add(ff1);

            Ship ff2 = new  Ship(game);

            ff2.Size = 1;

            ff2.Enabled = true;

            ff2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            ff2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            ff2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            ff2.Thrusts.Add(new Thrust() { AvailableThrust = 4, Enabled = true });
            ff2.Thrusts.Add(new Thrust() { AvailableThrust = 4, Enabled = true });

            ff2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            ff2.Hull.MaxThresholdLevel = 4;
            ff2.Hull.ThresholdLevel = 0;
            ff2.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            ff2.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            ff2.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 1 });
            ff2.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 1 });

            game.Players[0].Ships.Add(ff2);


            Ship dd1 = new  Ship(game);

            dd1.Size = 1;

            dd1.Enabled = true;

            dd1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            dd1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            dd1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            dd1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            dd1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            dd1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            dd1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            dd1.Hull.MaxThresholdLevel = 4;
            dd1.Hull.ThresholdLevel = 0;
            dd1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            dd1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            dd1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            dd1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });

            game.Players[0].Ships.Add(dd1);

            Ship dd2 = new  Ship(game);

            dd2.Size = 1;

            dd2.Enabled = true;

            dd2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            dd2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            dd2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            dd2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            dd2.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            dd2.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            dd2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            dd2.Hull.MaxThresholdLevel = 4;
            dd2.Hull.ThresholdLevel = 0;
            dd2.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            dd2.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            dd2.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            dd2.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });

            game.Players[0].Ships.Add(dd2);

            Ship cl1 = new  Ship(game);

            cl1.Size = 2;

            cl1.Enabled = true;

            cl1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            cl1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            cl1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            cl1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            cl1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            cl1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            cl1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            cl1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            cl1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            cl1.Hull.MaxThresholdLevel = 4;
            cl1.Hull.ThresholdLevel = 0;
            cl1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            cl1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            cl1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            cl1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });

            game.Players[0].Ships.Add(cl1);

            Ship cl2 = new  Ship(game);

            cl2.Size = 2;

            cl2.Enabled = true;

            cl2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            cl2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            cl2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            cl2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            cl2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            cl2.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            cl2.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            cl2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            cl2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            cl2.Hull.MaxThresholdLevel = 4;
            cl2.Hull.ThresholdLevel = 0;
            cl2.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            cl2.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            cl2.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            cl2.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });

            game.Players[0].Ships.Add(cl2);

            Ship ch1 = new  Ship(game);

            ch1.Size = 2;

            ch1.Enabled = true;

            ch1.Weapons.Add(new Torpedo() { Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = false, FrontStarboard = false } });
            ch1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            ch1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            ch1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            ch1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            ch1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            ch1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            ch1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            ch1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            ch1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            ch1.Hull.MaxThresholdLevel = 4;
            ch1.Hull.ThresholdLevel = 0;
            ch1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 5 });
            ch1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 5 });
            ch1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            ch1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });

            game.Players[0].Ships.Add(ch1);

            Ship bc1 = new  Ship(game);

            bc1.Size = 3;

            bc1.Enabled = true;

            bc1.Weapons.Add(new Torpedo() { Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            bc1.Weapons.Add(new Torpedo() { Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = false, FrontStarboard = true } });
            bc1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            bc1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            bc1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            bc1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            bc1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            bc1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            bc1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            bc1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            bc1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            bc1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            bc1.Hull.MaxThresholdLevel = 4;
            bc1.Hull.ThresholdLevel = 0;
            bc1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 7 });
            bc1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 7 });
            bc1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 6 });
            bc1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 6 });

            game.Players[0].Ships.Add(bc1);

            ///Player Two

            Ship p2ff1 = new  Ship(game);

            p2ff1.Size = 1;

            p2ff1.Enabled = true;

            p2ff1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2ff1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2ff1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            p2ff1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            p2ff1.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            p2ff1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2ff1.Hull.MaxThresholdLevel = 4;
            p2ff1.Hull.ThresholdLevel = 0;
            p2ff1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            p2ff1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            p2ff1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            p2ff1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 1 });

            game.Players[1].Ships.Add(p2ff1);

            Ship p2ff2 = new  Ship(game);

            p2ff2.Size = 1;

            p2ff2.Enabled = true;

            p2ff2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2ff2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2ff2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            p2ff2.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });
            p2ff2.Thrusts.Add(new Thrust() { AvailableThrust = 3, Enabled = true });

            p2ff2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2ff2.Hull.MaxThresholdLevel = 4;
            p2ff2.Hull.ThresholdLevel = 0;
            p2ff2.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            p2ff2.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            p2ff2.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });
            p2ff2.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 1 });

            game.Players[1].Ships.Add(p2ff2);


            Ship p2dd1 = new  Ship(game);

            p2dd1.Size = 1;

            p2dd1.Enabled = true;

            p2dd1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2dd1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            p2dd1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });

            p2dd1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });
            p2dd1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });

            p2dd1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2dd1.Hull.MaxThresholdLevel = 4;
            p2dd1.Hull.ThresholdLevel = 0;
            p2dd1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            p2dd1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            p2dd1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            p2dd1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });

            game.Players[1].Ships.Add(p2dd1);

            Ship p2dd2 = new  Ship(game);

            p2dd2.Size = 1;

            p2dd2.Enabled = true;

            p2dd2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2dd2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            p2dd2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });

            p2dd2.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });
            p2dd2.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });

            p2dd2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2dd2.Hull.MaxThresholdLevel = 4;
            p2dd2.Hull.ThresholdLevel = 0;
            p2dd2.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            p2dd2.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            p2dd2.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });
            p2dd2.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 2 });

            game.Players[1].Ships.Add(p2dd2);

            Ship p2cl1 = new  Ship(game);

            p2cl1.Size = 2;

            p2cl1.Enabled = true;

            p2cl1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2cl1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            p2cl1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            p2cl1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            p2cl1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });
            p2cl1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });

            p2cl1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            p2cl1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2cl1.Hull.MaxThresholdLevel = 4;
            p2cl1.Hull.ThresholdLevel = 0;
            p2cl1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            p2cl1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            p2cl1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            p2cl1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });

            game.Players[1].Ships.Add(p2cl1);

            Ship p2cl2 = new  Ship(game);

            p2cl2.Size = 2;

            p2cl2.Enabled = true;

            p2cl2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2cl2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            p2cl2.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            p2cl2.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            p2cl2.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });
            p2cl2.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });

            p2cl2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            p2cl2.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2cl2.Hull.MaxThresholdLevel = 4;
            p2cl2.Hull.ThresholdLevel = 0;
            p2cl2.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            p2cl2.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            p2cl2.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 4 });
            p2cl2.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 3 });

            game.Players[1].Ships.Add(p2cl2);

            Ship p2ch1 = new  Ship(game);

            p2ch1.Size = 2;

            p2ch1.Enabled = true;

            p2ch1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2ch1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            p2ch1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            p2ch1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2ch1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            p2ch1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });
            p2ch1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });

            p2ch1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            p2ch1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2ch1.Hull.MaxThresholdLevel = 4;
            p2ch1.Hull.ThresholdLevel = 0;
            p2ch1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 6 });
            p2ch1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 6 });
            p2ch1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 5 });
            p2ch1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 5 });

            game.Players[1].Ships.Add(p2ch1);

            Ship p2bc1 = new  Ship(game);

            p2bc1.Size = 3;

            p2bc1.Enabled = true;

            p2bc1.Weapons.Add(new Torpedo() { Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2bc1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = false, Front = true, FrontPortside = true, FrontStarboard = false } });
            p2bc1.Weapons.Add(new Beam() { Class = 3, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = false, AftStarboard = true, Front = true, FrontPortside = false, FrontStarboard = true } });
            p2bc1.Weapons.Add(new Beam() { Class = 2, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2bc1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });
            p2bc1.Weapons.Add(new Beam() { Class = 1, Enabled = true, FireArc = new Arc() { Aft = false, AftPortside = true, AftStarboard = true, Front = true, FrontPortside = true, FrontStarboard = true } });

            p2bc1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });
            p2bc1.Thrusts.Add(new Thrust() { AvailableThrust = 2, Enabled = true });

            p2bc1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            p2bc1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });
            p2bc1.FireControlSystems.Add(new FireControlSystem() { Enabled = true });

            p2bc1.Hull.MaxThresholdLevel = 4;
            p2bc1.Hull.ThresholdLevel = 0;
            p2bc1.Hull.Stregth.Add(0, new HullStregth() { CurrentDamage = 0, MaxDamage = 8 });
            p2bc1.Hull.Stregth.Add(1, new HullStregth() { CurrentDamage = 0, MaxDamage = 8 });
            p2bc1.Hull.Stregth.Add(2, new HullStregth() { CurrentDamage = 0, MaxDamage = 7 });
            p2bc1.Hull.Stregth.Add(3, new HullStregth() { CurrentDamage = 0, MaxDamage = 7 });

            game.Players[1].Ships.Add(p2bc1);


             //TODO Create a Placement LogicalGame State
            int shipSpacer = (int)(game.Map.MapHeight / game.Players[0].Ships.Count);
            int currentPlacement = 1;

            foreach (Ship ship in game.Players[0].Ships)
            {
                ship.PositionX = 5;
                ship.PositionY = currentPlacement;
                currentPlacement += shipSpacer;
                ship.Heading = 0;
                ship.OwnerPlayer = game.Players[0];
            }

            shipSpacer = (int)(game.Map.MapHeight / game.Players[1].Ships.Count);
            currentPlacement = 1;

            foreach (Ship ship in game.Players[1].Ships)
            {
                ship.PositionX = game.Map.MapWidth - 5;
                ship.PositionY = currentPlacement;
                currentPlacement += shipSpacer;
                ship.Heading = 180;
                ship.OwnerPlayer = game.Players[1];
            }

            return game;
        }

    }
}
